﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media;
namespace VBFOOL.MediaPlayer.Core.Interface
{
    public interface IInputSource
    {
        IEnumerable<IMediaStream> AvailableStream { get; }
        IList<ICodecFilter> Codecs { get; }
        bool BuildStreams();
        bool CanSeek { get; }
        decimal Duration { get; }
        long Seek(long SeekToTime);
        IEnumerable<ISubtitleReader> Subtitles { get; }
        string Title { get; }
    }

    public interface IMediaStream
    {
        IInputSource Source { get; }
        MediaStreamDescription Description { get; }
        FrameData GetFrame();
        ICodecFilter Codec { get; }
        double BufferProgress { get; }
        object CodecVariable { get; set; }
    }


    public interface ICodecFilter
    {
        IDictionary<MediaStreamAttributeKeys, string> GetCodecPrivateData(IDictionary<string, object> RawData);
        bool SupportCodecID(string CodecID);
        byte[] Translate(byte[] source, int offset, int count);

    }
}
